fn main() {
    // 1. 迭代器基本使用
    let v1 = vec![1,2,3];
    // 为啥v1_iter前面可以不用加mut, 因为在for循环中, 实际上已经将其变为了mut
    let v1_iter = v1.iter();
    // 几个迭代方法是不同的:
    // 1. iter, 在不可变引用上创建迭代器;
    // 2. into_iter, 创造迭代器, 并获得所有权
    // 3. iter_mut, 返回一个可变引用
    for val in v1_iter {
        println!("{}", val);
    }
    // 13.6内容
    // 实现iterator trait, 必须实现以下方法:
    // next, 返回Option<Self::Item>
    // 消耗型适配器: 消耗掉迭代器, 返回一个集合
    // 比如sum方法, 就是一个消耗型适配器, 它会消耗掉迭代器, 返回一个值
    let sum1 = vec![1,2,3];
    let sum_iter = sum1.iter();
    // result一定要标注类型
    let result:i32 = sum_iter.sum();
    // 每次迭代, 都会消耗掉一个迭代器
    println!("总和为: {}", result);
   
}

